package treenode;


import javax.swing.text.ViewFactory;

public class BTree {
    TreeNode<Integer> root;

    public void add(Integer value) {
        // 根节点
        if (root == null) {
            root = new TreeNode<>(value);
            return;
        }

        //插入 相比较 （每次都是从根进行比较），再插入（一定没有孩子才能插入）
        TreeNode<Integer> currentNode = root;
        //每次都是丛根比较
        while (true) {
            if (value < currentNode.date) { //向左走
                if (currentNode.left == null) { //插入
                    currentNode.left = new TreeNode<>(value);
                    return;
                }
                currentNode = currentNode.left;
            } else if (value > currentNode.date) {
                if (currentNode.right == null) {
                    currentNode.right = new TreeNode<>(value);
                    return;
                }
                currentNode = currentNode.left;
            } else {
                return;
            }
        }
    }

    public boolean search(int key) {
        TreeNode<Integer> currNode = root;
        while (true) {
            if (currNode == null) {
                return false;
            }
            if (currNode.date == key) {
                return true;
            }
            if (key < currNode.date) {
                currNode = currNode.left;
            } else {
                if (key > currNode.date) {
                    currNode = currNode.right;
                }
            }
        }
    }

    public boolean find(TreeNode<Integer> node, int key) {
        if (node == null) {
            return false;
        }
        if (key == node.date) {
            return true;
        }
        if (key > node.date) {
            return find(node.right, key);
        } else {
            return find(node.left, key);
        }
    }

    // 中
    public void midOrder(TreeNode node) {
        if (node != null) {
            midOrder(node.left);
            System.out.println(node.date);
            midOrder(node.right);
        }
    }
}
